package com.nine.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.nine.entity.Account;
import com.nine.entity.Bills;

/**
 * 银行账户业务层
 * 
 * @author hubing
 *
 */
public interface AccountService {

	/**
	 * 传参数：Account实体，修改账户money余额。
	 * 
	 * @param account
	 * @return 1：修改成功，0：修改失败
	 */
	int updateMoneyByAccountid(Account account);

	/**
	 * 查单条银行账户表记录
	 * 
	 * @param accountid
	 * @return Account对象
	 */
	Account selectAccount(Integer accountid);

	/**
	 * 获取18位订单号
	 * 
	 * @return 长度为18的字符串
	 */
	String getUUID();

	/**
	 * 添加订单表记录
	 * 
	 * @param bills
	 * @return
	 */
	int insertBills(Bills bills);

	/**
	 * 汇款充值 保存临时（状态为3）订单到数据库
	 * 
	 * @param id
	 * @param moneyin
	 * @param keywords
	 * @return 返回订单号
	 */
	String paymentOfRemittances(int id, float moneyin, String keywords);

	/**
	 * 修改临时订单状态为已保存
	 * 
	 * @return
	 */
	int updateBillsState(String bid);

	/**
	 * 通过订单号，修改支付成功订单的订单状态和银行账户金额
	 * 
	 * @param bid
	 * @param account
	 * @return 1：成功，0：失败
	 */
	int saveBillsStateAndAccountMoney(String bid);

	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写

	/**
	 * 通过登录用户ID修改money，并添加汇款记录
	 * 
	 * @param id
	 * @param money
	 * @return
	 */
	public int bankHuiKuanChongZhi(int id, float money, String keywords);

	/**
	 * 获得充值订单的编号
	 * 
	 * @return
	 */
	public String bankGetCZUUID();

	/**
	 * 验证登录用户的支付密码
	 * 
	 * @param map
	 * @return
	 */
	public int bank1SelectPaycodeById(int id, int paycode);

	/**
	 * 查询登录用户所有充值汇款信息
	 * 
	 * @param username
	 * @return
	 */
	public List<Bills> bank1SelectBillsByUsernameAndCZ(String username);

	/**
	 * 验证密码
	 * 
	 * @param id
	 * @param paycode
	 * @return
	 */
	public int bank1SelectPaycode(int id, int paycode);

	/**
	 * 获取转账订单号
	 * 
	 * @return
	 */
	public Map<String, String> bankGetZZUUID();

	/**
	 * 验证密码成功，转账操作数据库
	 * 
	 * @param map
	 * @return
	 */
	public void bank1NeiBuZhuanZhang(int id, String rid, float money);
	
	/**
	 * 查询登录用户所有转账信息
	 * 
	 * @param username
	 * @return
	 */
	public List<Bills> bank1SelectBillsByUsernameAndZZ(String username);
	
	
	
	//向银行账户添加一条记录
	public int insertSelective(Account record);
	
	/**
	 * 根据用户名获取支付密码
	 * @param username	用户名
	 * @return	支付密码 字符串
	 */
	public String getpayCodeByUname(String username);
	
	/**
	 * 根据用户名来修改密码
	 * @param username	用户名
	 * @param paycode	密码
	 * @return	影响行数
	 */
	public Integer updatePayCodeByUsername( String username, String paycode);
}
